package middleware

import (
	"backendChat/utils"
	"net/http"

	"github.com/gin-gonic/gin"
)

// 权限检查函数
func CheckAuthJwt() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 假设权限存储在请求的header中
		jwtStr := c.GetHeader("X-Csrf-Token")
		if jwtStr == "" {
			c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"code": -1, "msg": "权限校验失败"})
			return
		}
		token, claims, err := utils.ParseJWTStr(jwtStr)
		if err != nil {
			c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{"code": -1, "msg": "权限校验失败"})
			return
		}
		// 权限是否无效
		if token.Valid && claims.UserID > 0 {
			// 使用 context 传值
			c.Set("userId", claims.UserID)
			c.Next() // 用户有权限，继续后续处理
		} else {
			c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"code": -1, "msg": "无权限"})
		}
	}
}
